Storage services providing storage areas via a network have been in widespread use, and examples of these services include online storage services and cloud storage services. In addition, there are storage gateways serving as gateways between these storage services and computers of their customers.
For example, a cloud storage gateway relays write data between a cloud storage system and a computer of its customer. As a more specific example, a cloud storage gateway receives write data per file from a computer of a customer and a write request for the write data and transfers the write data per object to a cloud storage.
In addition, as an example of the related technique, there has been proposed a file server that stores data on an online storage. In the case of this file server, a database for holding configurations about blocks obtained by dividing a file, a database for holding file configurations, and a database for holding meta-information are each divided into a plurality of partitioned databases, and information in any one of the above databases is uploaded to an online storage per partitioned database. In addition, an entry in each partitioned database includes a Dirty flag indicating whether the corresponding content has been updated, and whether a content in any one of the partitioned databases needs to be uploaded to the online storage is determined based on the corresponding Dirty flag.
See, for example, Japanese National Publication of International Patent Application No. 2014-529111 and Japanese Laid-open Patent Publication No. 2012-141738.
The above storage gateway temporarily stores data to be transferred to a storage service in a local storage and extracts data that needs to be transferred from the data stored in the local storage. In this processing, there are cases in which the processing for storing data in the local storage and the processing for extracting data that needs to be transferred from the local storage and transferring the data are performed asynchronously.
In the case of this kind of storage gateway, it is important that the data that needs to be transferred be efficiently and accurately extracted from the data stored in the local storage. For example, one method of efficiently extracting the data that needs to be transferred is storing a flag such as the above Dirty flag, which indicates whether data has been updated, per data group used as a unit for data transfer to an external storage. However, with this method, while a data group is being transferred to a storage service based on the corresponding flag, if the original data group in the local storage is updated, the processing module that performs the transfer processing is unable to recognize the occurrence of the update. Thus, the update content of the data group could not be reflected accurately on the storage service.
This problem could arise not only in storage gateways but also in information processing apparatuses that transfer stored data to external storage apparatuses.